package com.lagou.session;

import com.lagou.pojo.Configuration;

import java.sql.Connection;
import java.util.List;

public interface SqlSession {

    //查询所有
    <E> List<E> selectList(String statementId,Object parameter) throws Exception;

    //根据条件查询单个
    <T> T selectOne(String statementId,Object parameter) throws Exception;

    /**
     * 插入操作
     * @param statementId 查找sql的唯一标识{namespace.id}
     * @param parameter 参数
     * @return
     */
    int insert(String statementId, Object parameter) throws Exception;

    /**
     * 更新操作
     * @param statementId 查找sql的唯一标识{namespace.id}
     * @param parameter 参数
     * @return
     */
    int update(String statementId, Object parameter) throws Exception;

    /**
     * 删除操作
     * @param statementId 查找sql的唯一标识{namespace.id}
     * @param parameter 参数
     * @return
     */
    int delete(String statementId, Object parameter) throws Exception;

    /**
     * 提交事务
     */
    void commit() throws Exception;

    /**
     * 回滚事务
     */
    void rollback() throws Exception;

    /**
     * 关闭sqlSession
     */
    void close();


    //为Dao接口生成代理实现类
    <T> T getMapper(Class<?> mapperClass);

    Configuration getConfiguration();

    Connection getConnection();
}
